package com.delio.server.pagos.aportes;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.delio.client.pagos.aportes.Aporte;
import com.delio.client.pagos.aportes.DescuentoAporte;
import com.delio.server.base.Conexion;
import com.ibatis.sqlmap.client.SqlMapClient;

public class Aportes {
	private static SqlMapClient sqlMap = null;

	public static boolean save(Aporte ap) {
		boolean respuesta = true;
		sqlMap = Conexion.getSqlMap();

		try {
			if (ap.getId() != null)
				sqlMap.update("updateAporte", ap);
			else
				sqlMap.insert("insertAporte", ap);

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}

	public static boolean delete(Integer id) {
		boolean respuesta = true;
		sqlMap = Conexion.getSqlMap();
		try {
			if (id != null)
				sqlMap.delete("deleteAporte", id);
			else
				respuesta = false;

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}

	public static boolean deleteAll(String ids) {
		boolean respuesta = true;
		sqlMap = Conexion.getSqlMap();
		try {
			if (ids != null)
				sqlMap.delete("deleteAllAportes", ids);
			else
				respuesta = false;

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}

	@SuppressWarnings("unchecked")
	public static List<Aporte> getAportes(Integer tipoaporte_id) {
		sqlMap = Conexion.getSqlMap();
		List<Aporte> data = null;
		try {
			if (tipoaporte_id != null)
				data = sqlMap.queryForList("getAportes", tipoaporte_id);
			else
				data = sqlMap.queryForList("getAportesAll");

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return data;
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static boolean save(List<DescuentoAporte> lista, Integer contrato_id) {
		boolean respuesta = true;

		sqlMap = Conexion.getSqlMap();
      
		try {  deleteDescuentoAporte(contrato_id);
			for (Iterator i = lista.iterator(); i.hasNext();) {
				DescuentoAporte da = (DescuentoAporte) i.next();
				sqlMap.startTransaction();
				Map m = new HashMap(2);
				m.put("aporte_id", da.getAporte_id());
				m.put("contrato_id", contrato_id);
				sqlMap.update("insertDescuentoAporte", m);
				sqlMap.commitTransaction();
				sqlMap.endTransaction();
					
			}

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}

	@SuppressWarnings("unchecked")
	public static List<DescuentoAporte> getDescuentoAportes(Integer contrato_id) {
		sqlMap = Conexion.getSqlMap();
		List<DescuentoAporte> data = null;
		try {
			data = sqlMap.queryForList("getDescuentoAportes", contrato_id);

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return data;
	}
	
	public static boolean deleteDescuentoAporte(Integer id) {
		boolean respuesta = true;
		sqlMap = Conexion.getSqlMap();
		try {
			if (id != null)
				sqlMap.delete("deleteDescuentoAporte", id);
			else
				respuesta = false;

		} catch (SQLException e) {
			respuesta = false;
			e.printStackTrace();
		}
		return respuesta;
	}
	

}
